home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 May / may_2001.iso / intercd / root / Multimedia / ^DivX_Article / virtualdub / VirtualDub-source-1_4d / f_blur.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-03-20  |  2.3 KB  |  99 lines

  1. //    VirtualDub - Video processing and capture application
  2. //    Copyright (C) 1998-2001 Avery Lee
  3. //
  4. //    This program is free software; you can redistribute it and/or modify
  5. //    it under the terms of the GNU General Public License as published by
  6. //    the Free Software Foundation; either version 2 of the License, or
  7. //    (at your option) any later version.
  8. //
  9. //    This program is distributed in the hope that it will be useful,
  10. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. //    GNU General Public License for more details.
  13. //
  14. //    You should have received a copy of the GNU General Public License
  15. //    along with this program; if not, write to the Free Software
  16. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  
  18. #include "filter.h"
  19.  
  20. #include "Effect.h"
  21. #include "e_blur.h"
  22.  
  23. //#define USE_ASM
  24.  
  25. struct FilterBlurData {
  26.     VEffect *effect;
  27. };
  28.  
  29. static int blur_run(const FilterActivation *fa, const FilterFunctions *ff) {
  30.     FilterBlurData *pfbd = (FilterBlurData *)fa->filter_data;
  31.  
  32.     if (pfbd->effect)
  33.         pfbd->effect->run(&fa->dst);
  34.  
  35.     return 0;
  36. }
  37.  
  38. static int blur_start(FilterActivation *fa, const FilterFunctions *ff) {
  39.     FilterBlurData *pfbd = (FilterBlurData *)fa->filter_data;
  40.  
  41.     if (!(pfbd->effect = VCreateEffectBlur(&fa->dst)))
  42.         return 1;
  43.  
  44.     return 0;
  45. }
  46.  
  47. static long blur_param(FilterActivation *fa, const FilterFunctions *ff) {
  48.     return 0;
  49. }
  50.  
  51. static int blur_start2(FilterActivation *fa, const FilterFunctions *ff) {
  52.     FilterBlurData *pfbd = (FilterBlurData *)fa->filter_data;
  53.  
  54.     if (!(pfbd->effect = VCreateEffectBlurHi(&fa->dst)))
  55.         return 1;
  56.  
  57.     return 0;
  58. }
  59.  
  60. static int blur_stop(FilterActivation *fa, const FilterFunctions *ff) {
  61.     FilterBlurData *pfbd = (FilterBlurData *)fa->filter_data;
  62.  
  63.     delete pfbd->effect;
  64.     pfbd->effect;
  65.  
  66.     return 0;
  67. }
  68.  
  69.  
  70. extern FilterDefinition filterDef_blur={
  71.     0,0,NULL,
  72.     "blur",
  73.     "Applies a radius-1 gaussian blur to the image.",
  74.     NULL,NULL,
  75.     sizeof(FilterBlurData),
  76.     NULL,NULL,
  77.     blur_run,
  78.     blur_param,
  79.     NULL,
  80.     NULL,
  81.     blur_start,
  82.     blur_stop
  83. };
  84.  
  85. extern FilterDefinition filterDef_blurhi={
  86.     0,0,NULL,
  87.     "blur more",
  88.     "Applies a radius-2 gaussian blur to the image.",
  89.     NULL,NULL,
  90.     sizeof(FilterBlurData),
  91.     NULL,NULL,
  92.     blur_run,
  93.     blur_param,
  94.     NULL,
  95.     NULL,
  96.     blur_start2,
  97.     blur_stop
  98. };
  99.